// 声明该类所在的包为 com.score.interceptor
package com.score.interceptor;

// 导入 Spring 框架中用于声明配置类的注解
import org.springframework.context.annotation.Configuration;
// 导入 Spring MVC 中用于管理拦截器注册的类
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
// 导入 Spring MVC 中用于配置 Web MVC 的适配器类
// 注意：WebMvcConfigurerAdapter 在 Spring 5 中已被弃用，建议使用 WebMvcConfigurer 接口
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
 * MyWebAppConfigurer 类是一个 Spring 配置类，用于配置 Spring MVC 的拦截器。
 * 通过继承 WebMvcConfigurerAdapter 类，重写相关方法来添加自定义的拦截器。
 * 使用 @Configuration 注解将该类标记为配置类，Spring 会在启动时自动扫描并加载该配置。
 */
@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter {

	/**
	 * 重写 addInterceptors 方法，用于向拦截器注册中心添加自定义拦截器。
	 * 拦截器可以在请求处理的不同阶段进行拦截操作，如权限验证、日志记录等。
	 *
	 * @param registry 拦截器注册中心，用于管理和注册拦截器
	 */
	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		// 注释说明多个拦截器会组成一个拦截器链，请求会依次经过这些拦截器
		// 多个拦截器组成一个拦截器链
		// addPathPatterns 用于添加拦截规则，指定哪些请求需要被拦截
		// addPathPatterns 用于添加拦截规则
		// excludePathPatterns 用户排除拦截，指定哪些请求不需要被拦截
		// excludePathPatterns 用户排除拦截

		// 向拦截器注册中心添加一个 ErrorInterceptor 实例，并设置拦截规则为拦截所有请求
		registry.addInterceptor(new ErrorInterceptor()).addPathPatterns("/**");

		// 调用父类的 addInterceptors 方法，确保父类的拦截器配置也能生效
		super.addInterceptors(registry);
	}
}